package com.xinzhi.controller;

import com.xinzhi.utils.Result;
import com.xinzhi.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@RequestMapping
@RestController
@Slf4j
@RequiredArgsConstructor
public class FileControllerTest {
    @Autowired
    UserService userService;

    @PostMapping("/uploads")
    @ResponseBody
    public Result upload(MultipartFile file, HttpServletRequest request) throws IOException {
        //文件上传 1、验证上传文件是否非空
        if (!file.isEmpty()) {
            //把接收到的数据 存储到服务器
            //2、获取要存储的位置
            File dir = new File(request.getServletContext().getRealPath("/"), "upload");
            if (!dir.exists()) {
                //3、验证对应的目录是否存在，如果文件不存在，创建文件夹
                dir.mkdirs();//创建所有不存在的文件夹
                //dir.mkdir();//只创建单层文件夹
            }
            //获取要存储的内容
            //4、getBytes 获取上传的文件内容
            byte[] data = file.getBytes();
            //把内容写出到指定的文件中
            //5、getOriginalFilename 获取上传的文件名
            //防止文件名一致，给文件名加时间戳
            File f = new File(dir, System.currentTimeMillis() + "_" + file.getOriginalFilename());
            //6、把上传的文件内容，写出到指定的文件中
            IOUtils.write(data, new FileOutputStream(f));
            //取出用户id用来修改该用户头像
//            User user = (User) request.getSession().getAttribute("user");
//            int id = user.getId();
            //7、返回结果,调用service方法把图片地址存入数据库
            return userService.upheadshot("http://localhost:8080/upload/" + System.currentTimeMillis() + "_" + file.getOriginalFilename(), 1);
        } else {
            return Result.error(5002, "请选择要上传的文件！");
        }
    }
}
